#ifndef __SERVICE_FACTORY_H__
#define __SERVICE_FACTORY_H__
#include "Service.h"

/**
* Encapsulates new services creation.
*/

class IArduino;
class IEthernet;
class BoardAssembly;

class ServiceFactory{
public:
	ServiceFactory(IArduino& a, MessageRouter& router, ILogger& logger);
	virtual Service& createMontion(const String& name, int pin);
	virtual Service& createButton(const String& name, int pin);
	virtual Service& createLight(const String& name, int pin);
	virtual Service& createAmbient(const String& name, const String& buttonTrigger, const String& montionTrigger, const String& lightCircuit);
	virtual Service& createSimpleLight(const String& name, const String& buttonTrigger, const String& lightCircuit);
private:
	MessageRouter& _router;
	IArduino& _arduino;
	ILogger& logger_;
};

#endif